文章目录
  1. 1. 概念
  2. 2. 前提
  3. 3. 生成证书
    1. 3.1. 生成私钥
    2. 3.2. 从私钥中删除pass phrase
    3. 3.3. 生成证书
    4. 3.4. 创建自签署证书
    5. 3.5. 修改证书和密钥的权限
  4. 4. SSL设置
    1. 4.1. 确认Server Name是否和刚次生成证书是输入的Common Name一致
  5. 5. 配置刚才生成的证书和公钥到apache中
  6. 6. 重启apache
  7. 7. 测试(IE这货就不测了,Proxmox不支持IE,赞)
    1. 7.1. Firefox
    2. 7.2. Chrome的结果

在使用Proxmox服务器时,会使用SSL访问它的WEB管理平台。

由于默认的安装中SSL证书没有签署,所以浏览器老是会弹出证书错误,是否继续之类的错误信息,很是碍眼。

为了在一定程度上避免这种现象,本文使用自签名的证书来配置Promox的HTTPS。

https

即使点了“仍然继续”,https前面还是会出现下面的小红叉叉,难看的很:

https-ugly

概念

关于自签名的证书,啰嗦几句。

常规的证书(那些NB的CA机构颁发的证书),允许使用该证书的服务器向用户说:

> 你应该信任我,因为你信任的机构(NB的CA机构)是这么说的

而自签名的证书就比较无耻了,它允许使用该证书的服务器对用户说:

> 你应该信任我,因为这是我说的

我们访问各种网银是,必须都是HTTPS(如果你不是,那你悲剧了),而他们的证书都是常规的证书。而我天朝的12306,好像是使用自签名的证书(个中原因,you know…)。

前提

首先已经安装好了Proxmox,而且网络,IP都已经配置好了。

假设,Proxmox服务器的IP是: 10.194.153.6

为了简单起见,Proxmox服务器没有绑定域名,总是以IP访问。

生成证书

本例中的证书是自我签署的证书。在默认的状态下,自我签署的证书在浏览器里会弹出警告,而不是讨人厌的错误提示。如果吧自我签署的证书事前安装好的话,就可以正常的使用了。

因此,如果只是(公司,实验室,局域网)内部使用的话,使用自我签署的证书是没有问题的。如果需要开放给外部访问,最好还是到CA认证机构去购买和申请正规的证书吧(不过据说很贵)。

闲话少叙,开始干活

生成私钥

~# cd /etc/ssl/certs 
/etc/ssl/certs# openssl genrsa -des3 -out server.key 1024 
Generating RSA private key, 1024 bit long modulus
.....................................................................++++++
.......++++++
e is 65537 (0x10001)
Enter pass phrase for server.key:                 # 输入pass phrase
Verifying - Enter pass phrase for server.key:   # 再次输入

从私钥中删除pass phrase

/etc/ssl/certs# openssl rsa -in server.key -out server.key 
Enter pass phrase for server.key:# 输入刚才输入的pass phrase
writing RSA key

生成证书

/etc/ssl/certs# openssl req -new -days 3650 -key server.key -out server.csr 
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:CN     #国家代码
State or Province Name (full name) [Some-State]:LN   #区域代码,也就是我们所谓的省
Locality Name (eg, city) []:DL   #城市
Organization Name (eg, company) [Internet Widgits Pty Ltd]: TESTWork   #公司名称,随便填
Organizational Unit Name (eg, section) []:VM Manager   #部门名称,随便写
Common Name (eg, YOUR name) []:10.193.153.6   
       #服务器全名(FQDN),本例中因为都使用的是IP,所以直接把IP写上了。
       #这是证书生成过程中最重要的一步,这里填写的Common Name必须要保证与apache中配置的Server name一致,
       #否则生成后的证书还是不好用。
       #如果你使用的Proxmox已经在DNS服务器里面绑定了域名,比如:proxmox.abc.com
       #而且在apache配置中,虚拟主机的Server Name也是:proxmox.abc.com
       #那末,这一步,就必须填写:proxmox.abc.com,这样生成的证书才好使。

Email Address []:admin@10.194.153.6  #管理员邮件地址,随便填。
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:  #这里不输入也可以,直接回车
An optional company name []: #这里不输入也可以,直接回车

创建自签署证书

/etc/ssl/certs# openssl x509 -in server.csr -out server.crt -req -signkey server.key -days 3650
Signature ok
subject=/C=CN/ST=LN/L=DL/O=PSDCD/OU=10.194.153.6/CN=10.194.153.6
Getting Private key

修改证书和密钥的权限

/etc/ssl/certs# chmod 400 server.*

SSL设置

Promox的apache配置在下面的位置:

/etc/apache2/sites-enabled/pve.conf
/etc/apache2/sites-enabled/pve-redirect.conf

修改这两个个文件。

确认Server Name是否和刚次生成证书是输入的Common Name一致

不一致的情况下,有两条道:重新生成证书并签署,或者修改此处

1
ServerName 10.194.153.6

配置刚才生成的证书和公钥到apache中

1
2
3
4
5
6
7
8
9
10
11
12
<VirtualHost *:8006>
SSLEngine on
SSLProtocol all -SSLv2
# 为了保险起见,先注释掉默认的SSL配置
#SSLCertificateFile /etc/pve/local/pve-ssl.pem #这是默认的配置
#SSLCertificateKeyFile /etc/pve/local/pve-ssl.key #这是默认的配置
# 加入新的配置
SSLCertificateFile /etc/ssl/certs/server.crt #这是新的配置
SSLCertificateKeyFile /etc/ssl/certs/server.key #这是新的配置
… 此处省略N个字…
```language

重启apache

/etc/apache2/sites-enabled# apache2ctl restart

测试(IE这货就不测了,Proxmox不支持IE,赞)

Firefox

打开promox的WEB管理平台,给出了警告。点击“添加例外”。

ff

点击确认“安全例外”:

expt

终于看到了久违的登陆画面,注意,地址栏里面的https前不再会显示大红叉,而是正常的一个锁的样子了,说明自签名证书成功了。

ff-ok

Chrome的结果

chrome-ok

(END)

文章目录
  1. 1. 概念
  2. 2. 前提
  3. 3. 生成证书
    1. 3.1. 生成私钥
    2. 3.2. 从私钥中删除pass phrase
    3. 3.3. 生成证书
    4. 3.4. 创建自签署证书
    5. 3.5. 修改证书和密钥的权限
  4. 4. SSL设置
    1. 4.1. 确认Server Name是否和刚次生成证书是输入的Common Name一致
  5. 5. 配置刚才生成的证书和公钥到apache中
  6. 6. 重启apache
  7. 7. 测试(IE这货就不测了,Proxmox不支持IE,赞)
    1. 7.1. Firefox
    2. 7.2. Chrome的结果